package com.azt.api.service;

import com.azt.api.dto.UserMsgDto;
import com.azt.api.pojo.MsgConfig;
import com.azt.model.page.Pagination;

import java.util.List;
import java.util.Map;


public interface MsgConfigService {

	/**
	 * 分页查
	 * @param pageno
	 * @param pagesize
	 * @param searchMap
	 * @return
	 * @author 周天驰  2016年8月10日下午2:25:54
	 */
	Pagination getAztMsgPage(int pageno, int pagesize, Map<String, String> searchMap);

	 /**
     * 删除
     * @param id
     * @return
     * @author 周天驰  2016年8月10日下午2:25:54
     */
    void deleteAllById(Integer id);

    /**
    * 保存消息
    * @param aztMsg
    * @return
    * @author 周天驰  2016年8月10日下午2:25:54
    */
    void saveMsg(MsgConfig aztMsg);

    /**
    * 编辑消息
    * @param aztMsg
    * @return
    * @author 周天驰  2016年8月10日下午2:25:54
    */
    void saveEdit(MsgConfig aztmsg);

    
    /**
    * 查找是否有同code的msg
    * @param aztMsg
    * @return
    * @author 周天驰  2016年8月10日下午2:25:54
    */
    boolean findOrtherMsg(MsgConfig aztmsg);

    MsgConfig queryById(Integer id);
	///**
	// * 发送消息公共方法
	// * By Snowler
	// * @param code u_msg_config 表中的code
	// * @param params content内容中的参数  约定好  params中的value替换content中的“{key}”
	// * @param url 链接  在站内信和邮件里面作为点击查看的链接
	// * @param userIds  目标用户Ids
	// */
	//void sendMessage(String code , Map<String , String >params , String url , List<Integer> userIds);

	/**
	 * 发送有固定模板，固定收短息人的短息
	 * @param code u_msg_config 表中的code
	 * @param params content内容中的参数  约定好  params中的value替换content中的“{key}”
	 */
	void sendMessage(String code, Map<String, String> params);

	/**
	 * 发送消息公共方法
	 * By Snowler
	 * @param code u_msg_config 表中的code
	 * @param params content内容中的参数  约定好  params中的value替换content中的“{key}”
	 * @param url 链接  在站内信和邮件里面作为点击查看的链接
	 * @param users  目标用户(目前可以传Integer和UserMsgDto的List)
	 */
	void sendMessage(String code , Map<String , String >params , String url  , List users);

	/**
	 * 增加参数,是否延迟发送,
	 * @param delay  true时则延迟到工作时间发送
	 * Created by 张栋 on 2017/1/11 14:21
	 */
	void sendMessage(String code , Map<String , String >params , String url  , List users,boolean delay);

	/**
	 * 发送通知公司运营后台的公共方法
	 * @param configCode azt_config中的code 用来取发送目标
	 * @param msgCode u_msg_config 中的code 用来取发送模板
	 * @param params 发送模板中的变量参数
	 */
	void sendMessage(String configCode , String msgCode , Map<String , String >params);

	/**
	 * Created by 张栋 on 2016/11/24 10:34
	 */
	void sendMessage(String code , Map<String , String >params , String url , Integer... userIds);
	void sendMessage(String code , Map<String , String >params , String url , boolean delay,Integer... userIds);


	void sendMessageWithOutUserId(String code, Map<String, String> params, String mobile, String email, boolean delay);


	/**
	 * 延迟发送时,定时任务调用
	 * Created by 张栋 on 2017/1/11 17:19
	 */
	public void sendDelayEmail(String emailsStr,String msgTitle,String emailContent,String url);
	public void sendDelayMobile(String mobileStr,String telContent,Integer msgType);

	MsgConfig getMsgConfigByCode(String code);
}

